<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Crispy Plotter Source Code Overview</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <style type="text/css"> 
.version {
    font-size: 10px;
}
.code {
    font-family: "Courier New", Courier, mono; color: #333333;
    background-color: #E0E8F0;
}
a:link, a:hover, a:visited, a:active {
    text-decoration: none;
    color: #0050A0;
}
h1 {
    font-size: 20px;
}
h2 {
    font-size: 18px;
    margin: 24px 0px 32px 0px;
    padding-left: 16px;  
    border-left: solid #0050A0 8px;
    position: relatve;
    left: 48px;
}
h3 {
    font-size: 15px;
}
body {
    background-color: #A0A0A0;
    text-align: center;
    padding: 0px;
}
#main {
    background-color: #FFFFFF;
    margin: 32px auto 32px auto;
    padding: 64px;
    font-size: 13px;
    max-width: 600px;
    font-family: "Trebuchet MS", Verdana, Arial, sanserif; color: #333333;    
    text-align: justify;
}
dt {
    font-weight: bold;
}
</style>
</head>
<body>
    <div id="main">
        <h1>
            Crispy Plotter Source Code Overview</h1>
        <p>
            <span class="version">Version 1.7</span>
        </p>
        <h2>
            <strong>Contents </strong>
        </h2>
        <ol>
            <li><a href="#Introduction">Introduction</a></li>
            <li><a href="#File_Structure">File Structure</a></li>
            <li><a href="#Source_Structure">Source Structure</a>
                <ol>
                    <li><a href="#Getting_the_source_compiled">Getting the source compiled</a></li>
                    <li><a href="#Components">Components</a></li>
                </ol>
            </li>
            <li><a href="#License_Information">License Information</a></li>
            <li><a href="#Contact">Contact</a></li>
        </ol>
        <h2>
            <a id="Introduction">Introduction</a>
        </h2>
        <p>
            Welcome to the source code of Crispy Plotter and thanks in advance for your interest
            in this little geek tool :). Intentionally I began to write CP in the year 2003,
            simply because I needed a straightforward tool to display a function graph. Back
            then I still had to hardcode the function I wanted draw and recompile CP, so I quickly
            decided to write a parser. Later I added multiple graphs, OpenGL mode, plug-in capability
            and the function library. However Crispy Plotter's main focus still is plotting
            speed and an intuitive interface.
        </p>
        <p>
            With version 1.5, CP features a reworked interface with dockable tool windows. Also
            the management of function files as documents has been improved. With CP 1.6 the
            plotter has been totally rewritten from scratch with cleaner and more flexible code.
            CP 1.7 features printing and comes with gnugettext integration.</p>
        <p>
            If you have any questions concerning the source code or Crispy Plotter in general
            or you have a cool idea for a feature you would like to see in CP or you would like
            to participate, feel free to contact me, <a href="mailto:kk _at_ crispy-cow _dot_ de?subject=Crispy%20Plotter%20Source%20Code">
                kk _at_ crispy-cow _dot_ de</a>.
        </p>
        <h2>
            <a id="File_Structure">File Structure</a>
        </h2>
        <p>
            The folders of the source archive have the following content:
        </p>
        <ul>
            <li><span class="code">bin</span>: Binary application files are stored here</li><li>
                <span class="code">dcu</span>: Output folder for compiled units </li>
            <li><span class="code">doc</span>: HTML source code documentation (see <a href="doc/index.html">
                doc/index.html</a> for more) </li>
            <li><span class="code">install</span>: Installer script (made with NSIS, see <a href="http://nsis.sf.net/">
                http://nsis.sf.net </a>) </li>
            <li><span class="code">manual</span>: PHP source files of manual (see<a href="manual/Readme.htm">
                Readme.htm</a> for more info) </li>
            <li><span class="code">res</span>: Resources, mostly images and icons, not needed for
                compilation </li>
            <li><span class="code">src</span>: Source code </li>
        </ul>
        <h2>
            <a id="Source_Structure">Source Structure</a>
        </h2>
        <p>
            Generally the existing source should run stable. Although it could use some better
            commenting here and there, the parts I consider to be headache-producing (mainly
            parser routines) are quite well <a href="doc/index.html">documented</a>.
        </p>
        <p>
            The source code consists of the following parts:
        </p>
        <ol>
            <li>Components (see package <span class="code">src\CPControls\CPControls.dpk</span>)
            </li>
            <li>VCL Forms (<span class="code">src\Forms</span>) </li>
            <li>General code (<span class="code">src\General</span>)
                <br />
            </li>
            <li>Plotter (<span class="code">src\Plotter</span>) </li>
            <li>Parser (<span class="code">src\Parser</span>) </li>
            <li>Printing code (<span class="code">src\Printer</span>)</li>
            <li>Plugins (<span class="code">src\Plugins</span>) </li>
        </ol>
        <h3>
            <a id="Getting_the_source_compiled">Getting the source compiled</a> &nbsp;</h3>
        <ol>
            <li>Install the package CPControls.dpk. Make sure the components LinkLabel, ColorFadeBar
                and WorkspaceView are successfully registered. </li>
            <li>Crispy Plotter uses the Toolbar2000 components developed by Jordan Russell. These
                components can be downloaded on the website of Jordan Russell ( <a href="http://www.jrsoftware.org/">
                    www.jrsoftware.org </a>). Install the package suitable for your Delphi version
                and make sure the components are registered correctly. </li>
            <li>Crispy Plotter requires several third party libraries. Just get the following libraries
                and add the location of their source code to the library path of your Delphi IDE:&nbsp;
                <ol>
                    <li><a href="http://www.aggpas.org">AggPas</a>: This is a Pascal port done by Milan
                        Marusinec of the software rendering library Anti-Grain Geometry by Maxim Shemanarev.</li>
                    <li><a href="http://www.progdigy.com">GDI+ API for Delphi</a> by by Henri Gourvest</li>
                    <li><a href="http://dybdahl.dk/dxgettext/">dxgettext</a> by Lars B. Dybdahl</li>
                </ol>
            </li>
            <li>The Build process should run successful now. If you encounter a problem then please
                send me a mail (<a href="mailto:kk _at_ crispy-cow _dot_ de?subject=Crispy%20Plotter%20Source%20Code">
                    kk _at_ crispy-cow _dot_ de</a>). </li>
        </ol>
        <h3>
            <a id="Components">Components</a>
        </h3>
        <p>
            Crispy Plotter uses three additional components, which are stored inside the package
            CPControls.dpk (Don't forget to install this package in order to compile Crispy
            Plotter):
        </p>
        <dl>
            <dt>TLinkLabel</dt>
            <dd>
                TLinkLabel is a specialized, interactive TCustomLabel, which can be clicked to execute
                a file or document. Since it uses ShellExecute(), it can open URLs or start an e-mail
                client as well.
            </dd>
            <dt>TColorFadeBar</dt>
            <dd>
                TColorFadeBar is also similar to TLabel: It displays a color gradient background
                with static text. The text can be indented, displayed with or without shadow and
                the control itself can be displayed with a raised or sunken bevel.</dd>
            <dt>TWorkspaceView</dt>
            <dd>
                WorkspaceView is a derived tree view control. It shows the contents of a file folder.
                On key press or button click files can be executed, moved, deleted or copied.
            </dd>
        </dl>
        <h2>
            <a id="License_Information">License Information</a>
        </h2>
        <p>
            See License.txt for a full copy of the GPL.</p>
        <p>
            Crispy Plotter, a fast and easy-to-use function plotter<br />
            Copyright &copy; 2010 Konrad K&ouml;lzer
        </p>
        <p>
            This program is free software; you can redistribute it and/or modify it under the
            terms of the GNU General Public License as published by the Free Software Foundation;
            either version 2 of the License, or (at your option) any later version.
            <br />
            This program is distributed in the hope that it will be useful, but WITHOUT ANY
            WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
            PARTICULAR PURPOSE. See the GNU General Public License for more details.
            <br />
        </p>
        <h2>
            <a id="Contact">Contact</a>
        </h2>
        <p>
            If you have questions about source issues discussed here or more likely about source
            issues not discussed here, feel free to contact me, Konrad K&ouml;lzer, the original
            author of Crispy Plotter (<a href="mailto:kk _at_ crispy-cow _dot_ de?subject=Crispy%20Plotter%20Source%20Code">
                kk _at_ crispy-cow _dot_ de</a>).
        </p>
        <p>
            No matter if you just found a bug, have a suggestion or you would like to participate
            in developing Crispy Plotter or its plug-ins: Feel free to contact.</p>
        <p>
            If you would like to help in translating Crispy Plotter check out the section "Contribution"
            in the Crispy Plotter manual (in folder bin\Manual).
        </p>
        <p>
            Check out the Crispy Plotter Project Page on SourceForge at <a href="http://www.sourceforge.net/projects/cplotter">
                http://www.sourceforge.net/projects/cplotter</a>.
        </p>
    </div>
</body>
</html>
